package com.dkm.orproject.dkmoa.service.serviceimpl;

import com.dkm.orproject.dkmoa.dao.OaAssetMapper;
import com.dkm.orproject.dkmoa.dao.OaDepartmentMapper;
import com.dkm.orproject.dkmoa.domain.OaAsset;
import com.dkm.orproject.dkmoa.domain.OaDepartment;
import com.dkm.orproject.dkmoa.service.OaAssetService;
import com.dkm.orproject.utils.utils.IdToobtainUtils;
import com.github.pagehelper.PageHelper;
import org.springframework.stereotype.Repository;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import javax.annotation.Resource;
import java.util.List;

/**
 *  @ClassName : OaAssetServiceImpl  //类名
 *  @Description : 资产  //描述
 *  @Author : 石智诚  //作者
 *  @Date: 2020-11-24 15:07  //时间
 */
@Service
@Repository
@Transactional(rollbackFor = Exception.class)
public class OaAssetServiceImpl implements OaAssetService {
    /**
     * 资产mapper
     */
    @Resource
    OaAssetMapper mapper;
    /**
     * 部门mapper
     */
    @Resource
    OaDepartmentMapper departmentMapper;
    /**
     * 雪花算法
     */
    @Resource
    IdToobtainUtils utils;

    /**
     * 根据资产
     *
     * @param pkAssetId 资产Id
     * @return 回调函数
     */
    @Override
    public int deleteByPrimaryKey(Long pkAssetId) {
        return mapper.deleteByPrimaryKey(pkAssetId);
    }

    /**
     * 增加资产
     * @param record 资产模型
     * @return 回调函数
     */
    @Override
    public int insert(OaAsset record) {
        record.setPkAssetId(utils.getNumberId());
        record.setIsRevision("1");
        return mapper.insert(record);
    }

    /**
     * 根据id查询
     *
     * @param pkAssetId 资产Id
     * @return 资产模型
     */
    @Override
    public OaAsset selectByPrimaryKey(Long pkAssetId) {
        return mapper.selectByPrimaryKey(pkAssetId);
    }

    /**
     * 根据id 更新
     * @param record 资产模型
     * @return 回调函数
     */
    @Override
    public int updateById(OaAsset record) {
        if (record.getPersonnelId() != null) {
            OaDepartment department = departmentMapper.selectByPersonnelId(record.getPersonnelId());
            record.setAssetState("1");
            record.setAssetCategory("1");
            record.setAssetCategoryId(department.getPkDepartmentId());
        }else {

            record.setAssetState("0");
        }
        return mapper.updateById(record);
    }

    /**
     * 查询是否重复存在数据
     * @param asset 资产条码
     * @return 回调函数
     */
    @Override
    public int codeCount(OaAsset asset) {
        return mapper.codeCount(asset);
    }

    /**
     * 查看所有的资产
     * @param asset 资产模型
     * @param page 页面
     * @param limit 显示数量
     * @param startDate 开始时间
     * @param endDate 结束时间
     * @return 集合
     */
    @Override
    public List<OaAsset> findAll(OaAsset asset, Integer page, Integer limit, String startDate, String endDate) {
        PageHelper.startPage(page,limit);
        return mapper.findAll(asset,startDate,endDate);
    }

    /**
     * 统计 资产的数量
     * @param asset 资产模型
     * @param startDate 开始时间
     * @param endDate  结束时间
     * @return 长度
     */
    @Override
    public Long rowCount(OaAsset asset, String startDate, String endDate) {
        return mapper.rowCount(asset,startDate,endDate);
    }

    /**
     * 批量删除
     * @param id 资产Id
     * @return 回调函数
     */
    @Override
    public int delteAll(List<Long> id) {
        return mapper.delteAll(id);
    }

    /**
     * 单个删除
     * @param pkAssetId 资产Id
     * @return 回调函数
     */
    @Override
    public int deleteById(Long pkAssetId) {
        return mapper.deleteById(pkAssetId);
    }

    @Override
    public List<OaAsset> selectAll(Long pkAssetId) {
        return mapper.selectAll(pkAssetId);
    }
}
